package com.gcloud.dto;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;

public class DatabaseHandler extends SQLiteOpenHelper {
	 
    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 1;
 
    // Database Name
    private static final String DATABASE_NAME = "estructura";
 
    // Contacts table name
    private static final String TABLA_ARCHIVO = "archivo";
 
    // Contacts Table Columns names
    private static final String KEY = "key";
    private static final String NAME = "name";
    private static final String DESCRIPTION = "description";    
    private static final String MIMETYPE = "mimeType";
    private static final String ISDIRECTORY = "isDirectory";
    private static final String SIZE = "size";
    private static final String PARENT_KEY = "parent_key";
    private static final String URI = "uri";
    private static final String MD5 = "md5";
    private static final String FECHA_ACTUALIZACION = "fecha_actualizacion";
    
    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLA_ARCHIVO = "CREATE TABLE " + TABLA_ARCHIVO + "("
                + KEY + " STRING PRIMARY KEY," 
        		+ NAME + " TEXT,"
                + DESCRIPTION + " TEXT,"
                + MIMETYPE + " TEXT,"
                + ISDIRECTORY + " BOOLEAN,"
                + SIZE + " LONG,"
                + PARENT_KEY + " TEXT,"
                + URI + " TEXT,"
                + MD5 + " TEXT,"
                + FECHA_ACTUALIZACION + " DATETIME,"
        		+ ")";
        
        db.execSQL(CREATE_TABLA_ARCHIVO);
    }
 
    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLA_ARCHIVO);
 
        // Create tables again
        onCreate(db);
    }
    
    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */
 
    // Adding new contact
    void agregarArchivo(GCloudFile archivo) {
        SQLiteDatabase db = this.getWritableDatabase();
 
        ContentValues values = new ContentValues();

        values.put(KEY, archivo.getKey());
        values.put(NAME, archivo.getName());
        values.put(DESCRIPTION, archivo.getDescription());
        values.put(MIMETYPE, archivo.getMimeType());
        values.put(ISDIRECTORY, archivo.isDirectory());
        values.put(SIZE, archivo.getSize());
        values.put(PARENT_KEY, archivo.getParent_key());
  		values.put(URI, archivo.getUri());
  		values.put(MD5, archivo.getMd5());
 		values.put(FECHA_ACTUALIZACION, archivo.getFecha_actualizacion());
        // Inserting Row
        db.insert(TABLA_ARCHIVO, null, values);
        db.close(); // Closing database connection
    }
 
//    // Getting single contact
//    GCloudFile getArchivo(String key) {
//        SQLiteDatabase db = this.getReadableDatabase();
// 
//        Cursor cursor = db.query(TABLA_ARCHIVO, new String[] { KEY,
//                KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
//                new String[] { String.valueOf(id) }, null, null, null, null);
//        if (cursor != null)
//            cursor.moveToFirst();
// 
//        Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
//                cursor.getString(1), cursor.getString(2));
//        // return contact
//        return contact;
//    }
//     
//    // Getting All Contacts
//    public List<Contact> getAllContacts() {
//        List<Contact> contactList = new ArrayList<Contact>();
//        // Select All Query
//        String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;
// 
//        SQLiteDatabase db = this.getWritableDatabase();
//        Cursor cursor = db.rawQuery(selectQuery, null);
// 
//        // looping through all rows and adding to list
//        if (cursor.moveToFirst()) {
//            do {
//                Contact contact = new Contact();
//                contact.setID(Integer.parseInt(cursor.getString(0)));
//                contact.setName(cursor.getString(1));
//                contact.setPhoneNumber(cursor.getString(2));
//                // Adding contact to list
//                contactList.add(contact);
//            } while (cursor.moveToNext());
//        }
// 
//        // return contact list
//        return contactList;
//    }
// 
//    // Updating single contact
//    public int updateContact(Contact contact) {
//        SQLiteDatabase db = this.getWritableDatabase();
// 
//        ContentValues values = new ContentValues();
//        values.put(KEY_NAME, contact.getName());
//        values.put(KEY_PH_NO, contact.getPhoneNumber());
// 
//        // updating row
//        return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
//                new String[] { String.valueOf(contact.getID()) });
//    }
// 
//    // Deleting single contact
//    public void deleteContact(Contact contact) {
//        SQLiteDatabase db = this.getWritableDatabase();
//        db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
//                new String[] { String.valueOf(contact.getID()) });
//        db.close();
//    }
// 
// 
//    // Getting contacts Count
//    public int getContactsCount() {
//        String countQuery = "SELECT  * FROM " + TABLE_CONTACTS;
//        SQLiteDatabase db = this.getReadableDatabase();
//        Cursor cursor = db.rawQuery(countQuery, null);
//        cursor.close();
// 
//        // return count
//        return cursor.getCount();
//    }
    
}